﻿Public Class xtf_ABMarticulocomposicionproceso
    Public obj_articulocomposicionproceso As cls_articulocomposicionproceso_ = Nothing
    Private col_ControlesValidar As List(Of Control)

    Public Sub New()
        InitializeComponent()
        CargarSegunProduccion()
        CargarSegunValor()
        Me.Text = "Composicion Proceso Personal - Nuevo"
        obj_articulocomposicionproceso = New cls_articulocomposicionproceso_
        AgregarValidacionesGlobal(Me, Me.lac_general, col_ControlesValidar)
        cbo_TipoSegunProduccion.SelectedIndex = 0
    End Sub

    Private Sub CargarSegunProduccion()
        cbo_TipoSegunProduccion.Properties.Items.Clear()
        For Each tipocosto As cls_articulocomposicionproceso_.enu_segunproduccion In [Enum].GetValues(GetType(cls_articulocomposicionproceso_.enu_segunproduccion))
            cbo_TipoSegunProduccion.Properties.Items.Add(EnumDescription(tipocosto))
        Next
        cbo_TipoSegunProduccion.SelectedIndex = 0
    End Sub

    Private Sub CargarSegunValor()
        cbo_TipoSegunValor.Properties.Items.Clear()
        For Each tipocosto As cls_articulocomposicionmaquinariatarea_.enu_segunvalor In [Enum].GetValues(GetType(cls_articulocomposicionmaquinariatarea_.enu_segunvalor))
            cbo_TipoSegunValor.Properties.Items.Add(EnumDescription(tipocosto))
        Next
        cbo_TipoSegunValor.SelectedIndex = 0
    End Sub

    Public Sub Modificar(ByRef articulocomposicionproceso As cls_articulocomposicionproceso_)
        If IsNothing(obj_articulocomposicionproceso) Then
            obj_articulocomposicionproceso = New cls_articulocomposicionproceso_
        End If
        obj_articulocomposicionproceso = articulocomposicionproceso

        Me.Text = "Composicion Proceso Personal - " & obj_articulocomposicionproceso.ToString

        txt_proceso.Text = obj_articulocomposicionproceso.proceso.ToString
        txt_proceso.Tag = obj_articulocomposicionproceso.proceso
        txt_cantidad.Value = obj_articulocomposicionproceso.cantidad
        'chk_SegunProduccion.Checked = obj_articulocomposicionproceso.segunproduccion
        If obj_articulocomposicionproceso.tiposegunproduccion = cls_articulocomposicionproceso_.enu_segunproduccion.fijo Then
            cbo_TipoSegunProduccion.SelectedIndex = 0
        Else
            cbo_TipoSegunProduccion.SelectedIndex = obj_articulocomposicionproceso.tiposegunproduccion - 5
        End If


        txt_Valor.Text = obj_articulocomposicionproceso.valor
        If Not IsNothing(obj_articulocomposicionproceso.personal) Then
            txt_personal.Text = obj_articulocomposicionproceso.personal.ToString
            txt_personal.Tag = obj_articulocomposicionproceso.personal
        End If
        If obj_articulocomposicionproceso.tiposegunvalor = cls_articulocomposicionproceso_.enu_segunvalor.fijo Then
            cbo_TipoSegunValor.SelectedIndex = 0
        Else
            cbo_TipoSegunValor.SelectedIndex = obj_articulocomposicionproceso.tiposegunvalor
        End If

        'lbl_moneda.Text = obj_articulocomposicionproceso.articulo.

        obj_articulocomposicionproceso.proceso = Nothing
        obj_articulocomposicionproceso.articuloprimario = Nothing
        obj_articulocomposicionproceso.personal = Nothing
    End Sub

    Public Function ComprobarDatos() As Boolean
        If Not ControlarValidacionesGlobal(col_ControlesValidar) Then
            ErrManagerShow("000004", Me)
            Return False
        End If
        Return True
    End Function

    Private Sub btn_Guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Guardar.Click
        If ComprobarDatos() Then

            obj_articulocomposicionproceso.idproceso = CType(txt_proceso.Tag, cls_proceso_).idproceso

            obj_articulocomposicionproceso.cantidad(CDec(txt_cantidad.Value))
            'obj_articulocomposicionproceso.segunproduccion = chk_SegunProduccion.Checked
            If cbo_TipoSegunProduccion.SelectedIndex = 0 Then
                obj_articulocomposicionproceso.tiposegunproduccion = 0
            Else
                obj_articulocomposicionproceso.tiposegunproduccion = cbo_TipoSegunProduccion.SelectedIndex + 5
            End If

            obj_articulocomposicionproceso.valor(CDec(txt_Valor.Text / 60))
            obj_articulocomposicionproceso.tiposegunvalor = cbo_TipoSegunValor.SelectedIndex

            If Not IsNothing(txt_personal.Tag) Then
                obj_articulocomposicionproceso.idpersonal = CType(txt_personal.Tag, cls_personal_).idpersonal
            End If

            Me.DialogResult = Windows.Forms.DialogResult.OK
        End If
    End Sub

    Private Sub btn_Cerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Cerrar.Click
        Me.DialogResult = Windows.Forms.DialogResult.Cancel
    End Sub

    Private Sub txt_articulo_ButtonClick(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs) Handles txt_proceso.ButtonClick
        Dim buscar As xtf_buscardor
        Dim proceso_ As New cls_proceso_
        proceso_.CargarTodos()
        buscar = New xtf_buscardor("Procesos Personales", proceso_, {"nombre|Nombre", "descripcion|Descripcion"})
        If buscar.ShowDialog() = Windows.Forms.DialogResult.OK Then
            txt_proceso.Text = buscar.obj_resultado.ToString
            txt_proceso.Tag = buscar.obj_resultado
            obj_articulocomposicionproceso.idproceso = CType(txt_proceso.Tag, cls_proceso_).idproceso
        End If
    End Sub

    Private Sub cbo_TipoSegunProduccion_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbo_TipoSegunProduccion.SelectedIndexChanged
        If Not IsNothing(obj_articulocomposicionproceso) Then
            txt_cantidad.Enabled = False
            'txt_Valor.Properties.ReadOnly = True
            Select Case cbo_TipoSegunProduccion.SelectedIndex
                Case cls_articulocomposicionproceso_.enu_segunproduccion.fijo
                    txt_cantidad.Value = obj_articulocomposicionproceso.cantidad(cls_articulocomposicionproceso_.enu_segunproduccion.fijo)
                    txt_cantidad.Enabled = True
                    'txt_Valor.Properties.ReadOnly = False
                Case Else
                    txt_cantidad.Value = obj_articulocomposicionproceso.cantidad(CType(cbo_TipoSegunProduccion.SelectedIndex + 5, cls_articulocomposicionproceso_.enu_segunproduccion))
                    'txt_Valor.Text = obj_articulocomposicionproceso.valor(CType(cbo_TipoSegunProduccion.SelectedIndex + 5, cls_articulocomposicionproceso_.enu_segunproduccion))
            End Select
        End If
    End Sub

    Private Sub cbo_TipoSegunValor_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbo_TipoSegunValor.SelectedIndexChanged
        If Not IsNothing(obj_articulocomposicionproceso) Then
            cbo_TipoSegunProduccion.Enabled = True
            txt_Valor.Enabled = False
            txt_personal.Enabled = False
            Select Case cbo_TipoSegunValor.SelectedIndex
                Case cls_articulocomposicionproceso_.enu_segunvalor.fijo
                    txt_Valor.Enabled = True
                Case cls_articulocomposicionproceso_.enu_segunvalor.personal
                    txt_personal.Enabled = True
                    If Not IsNothing(txt_personal.Tag) Then
                        txt_Valor.Text = obj_articulocomposicionproceso.valor(CType(cbo_TipoSegunValor.SelectedIndex, cls_articulocomposicionproceso_.enu_segunvalor), (CType(txt_personal.Tag, cls_personal_).idpersonal)) * 60
                    Else
                        txt_Valor.Text = 0
                    End If
                Case cls_articulocomposicionproceso_.enu_segunvalor.valorProceso
                    cbo_TipoSegunProduccion.SelectedIndex = 0
                    cbo_TipoSegunProduccion.Enabled = False
                    txt_cantidad.Enabled = False
                    txt_cantidad.Value = 1
                    txt_Valor.Text = obj_articulocomposicionproceso.valor(CType(cbo_TipoSegunValor.SelectedIndex, cls_articulocomposicionproceso_.enu_segunvalor), 0) * 60
                Case Else
                    txt_Valor.Text = obj_articulocomposicionproceso.valor(CType(cbo_TipoSegunValor.SelectedIndex, cls_articulocomposicionproceso_.enu_segunvalor), 0) * 60
            End Select
        End If
    End Sub

    Private Sub txt_personal_ButtonClick(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs) Handles txt_personal.ButtonClick
        Dim buscar As xtf_buscardor
        Dim proceso_ As New cls_personal_
        proceso_.CargarTodos()
        buscar = New xtf_buscardor("Personal", proceso_, {"legajo|Legajo", "apellidonombre|Nombre"})
        If buscar.ShowDialog() = Windows.Forms.DialogResult.OK Then
            txt_personal.Text = buscar.obj_resultado.ToString
            txt_personal.Tag = buscar.obj_resultado
            cbo_TipoSegunValor_SelectedIndexChanged(Nothing, Nothing)
        End If
    End Sub

    Private Sub btn_VerInformacion_Click(sender As System.Object, e As System.EventArgs) Handles btn_VerInformacion.Click
        Dim tmp_produccion As New cls_produccion_
        Select Case cbo_TipoSegunProduccion.SelectedIndex
            Case cls_articulocomposicionarticulo_.enu_segunvalor.fijo
            Case Else
                If tmp_produccion.Buscar(obj_articulocomposicionproceso.ProduccionXCantidadXidproceso()) = True Then
                    Dim tmp_ABMProduccion As New xtf_ABMproduccion
                    tmp_ABMProduccion.Modificar(tmp_produccion, Nothing, Nothing)
                    tmp_ABMProduccion.Show()
                End If
        End Select
    End Sub
End Class